题解 CF791A@洛谷 | 791A@Codeforces 【Bear and Big Brother】

这一题是一个模拟算法。

我采用递归的方式解题。

头文件

没有什么特殊的。

#include <iostream>

主函数

在主函数中只需要以下几件事:

  1. 输入
  2. 跑一遍递归函数
  3. 输出
int main()
{
	int a, b;
	cin>>a>>b;
	cout<<f(a, b)<<endl;
	return 0;
}

可见递归函数是程序重点。

递归函数

首先,声明函数,一定要在main前面!!!int f(int a, int b);

其次,在后面写函数。

  • 如果已经满足条件(第一个数比第二个数大),则return 0。
  • 否则次数加1,模拟下一年。这里次数就是返回值。
int f(int a, int b)
{
	if(a > b) return 0;
	else return 1 + f(3*a, 2*b);
}

汇总

最后,把前面所有的合起来,得到:

#include <iostream>
using namespace std;

int f(int a, int b);

int main()
{
	int a, b;
	cin>>a>>b;
	cout<<f(a, b)<<endl;
	return 0;
}

int f(int a, int b)
{
	if(a > b) return 0;
	else return 1 + f(3*a, 2*b);
}